package com.framework.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.framework.system.entity.dto.SysUserAddDTO;
import com.framework.system.entity.dto.SysUserQueryDTO;
import com.framework.system.entity.dto.SysUserResetPwdDTO;
import com.framework.system.entity.dto.SysUserUpdateDTO;
import com.framework.system.entity.vo.AccountInfoVO;
import com.framework.system.entity.vo.SysUserListVO;
import com.framework.system.entity.vo.SysUserVO;
import com.framework.system.entity.vo.UserInfoVO;

import java.util.List;
import java.util.Set;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author Kevin
 * @since 2021-06-10
 */
public interface ISysUserService {

    /**
     * 分页查询用户列表
     *
     * @param reqPage
     * @param req
     * @return
     */
    Page<SysUserListVO> selectSysUserWithPage(Page reqPage, SysUserQueryDTO req);

    /**
     * 查询用户列表
     *
     * @param req
     * @return
     */
    List<SysUserListVO> selectSysUserWithList(SysUserQueryDTO req);

    /**
     * 新增用户
     *
     * @param req
     */
    void addSysUser(SysUserAddDTO req);

    /**
     * 修改用户
     *
     * @param req
     */
    void updateSysUser(SysUserUpdateDTO req);

    /**
     * 删除用户
     *
     * @param ids
     */
    void removeSysUser(String ids);

    /**
     * 查看用户
     *
     * @param id
     * @return
     */
    SysUserVO getSysUser(String id);

    /**
     * 重置密码
     *
     * @param req
     */
    void resetPwd(SysUserResetPwdDTO req);

    /**
     * 获取用户信息
     *
     * @return
     */
    UserInfoVO getUserInfo();

    /**
     * 获取权限标识
     *
     * @return
     */
    Set<String> selectPermCodeWithList();

    /**
     * 获取账户信息
     *
     * @return
     */
    AccountInfoVO getAccountInfo();

    /**
     * 更新账户信息
     *
     * @param req
     */
    void saveAccountInfo(AccountInfoVO req);

}
